package infraestrutura;

import java.util.Iterator;

import dominio.Usuario;

public class UsuarioValidation {
	public static boolean validaLogin(String login) {
		if(login.length() < 4) {
			return false;
		}
		if(isLetra(login.charAt(0))) {
			for(int i=1; i<login.length(); i++) {
				if(!isAlfanumerico(login.charAt(i))) {
					return false;
				}
			}
			return true;
		}
		else {
			return false;
		}
	}

	public static boolean existeLogin(String login) {
		Iterator<Usuario> elements = UsuarioSingleton.getInstance().iterator();
		while(elements.hasNext()) {
			Usuario current = elements.next();
			if(login.compareTo(current.getLogin()) == 0) {
				return true;
			}
		}
		return false;
	}

	public static Usuario searchUsuarioByLogin(String login) {
		Iterator<Usuario> elements = UsuarioSingleton.getInstance().iterator();
		while(elements.hasNext()) {
			Usuario current = elements.next();
			if(login.compareTo(current.getLogin()) == 0) {
				return current;
			}
		}
		return null;
	}

	public static boolean validaSenha(String senha) {
		if(senha.length() < 6) {
			return false;
		}
		for(int i=0; i<senha.length(); i++) {
			if(!isAlfanumerico(senha.charAt(i))) {
				return false;
			}
		}
		return true;
	}
	
	public static boolean validaNome(String nome) {
		if(nome.length() == 0) {
			return false;
		}
		for(int i=0; i<nome.length(); i++) {
			if(!isLetra(nome.charAt(i)) && !(nome.charAt(i) == 32)) {
				return false;
			}
		}
		return true;
	}

	public static boolean validaIdade(int idade) {
		return(idade > 12 && idade < 100);
	}

	private static boolean isAlfanumerico(char c) {
		return(isLetra(c) || isNumero(c));
	}

	private static boolean isNumero(char c) {
		return(c>47 && c<58);
	}

	private static boolean isLetra(char c) {
		return((c>64 && c<91) || (c>96 && c<123));
	}
}
